package com.triones.api.service;

import com.ruoyi.common.core.domain.PageQuery;
import com.ruoyi.common.core.page.TableDataInfo;
import com.triones.api.entity.CryptoChainDO;
import com.triones.api.entity.CryptoCurrencyDO;
import com.triones.api.entity.vo.CryptoChainVO;
import com.triones.api.entity.vo.CryptoCurrencyVO;

import java.util.List;

/**
 * 加密货币公链和币种
 */
public interface CryptoChainAndCurrencyService {

    /**
     * 查询公链分页列表
     * @param dto
     * @param pageQuery
     * @return
     */
    TableDataInfo<CryptoChainVO> chainPageList(CryptoChainDO dto, PageQuery pageQuery);

    /**
     * 查询公链详情
     * @param id
     * @return
     */
    CryptoChainVO selectChainById(Long id);

    /**
     * 校验公链唯一性
     * @param dto
     * @return
     */
    boolean checkChainUnique(CryptoChainDO dto);

    /**
     * 新增公链
     * @param dto
     */
    void addChain(CryptoChainDO dto);

    /**
     * 修改公链
     * @param dto
     */
    void editChain(CryptoChainDO dto);

    /**
     * 删除公链
     * @param id
     */
    void removeChain(Long id);

    /**
     * 查询公链列表
     * @return
     */
    List<CryptoChainVO> selectChainAll();

    /**
     * 查询币种
     * @param dto
     * @param pageQuery
     * @return
     */
    TableDataInfo<CryptoCurrencyVO> currencyList(CryptoCurrencyDO dto, PageQuery pageQuery);

    /**
     * 查询币种详情
     * @param id
     * @return
     */
    CryptoCurrencyVO getCurrencyInfo(Long id);

    /**
     * 校验币种唯一性
     * @param dto
     * @return
     */
    boolean checkCurrencyUnique(CryptoCurrencyDO dto);

    /**
     * 新增币种
     * @param dto
     */
    void addCurrency(CryptoCurrencyDO dto);

    /**
     * 修改币种
     * @param dto
     */
    void editCurrency(CryptoCurrencyDO dto);

    /**
     * 删除币种
     * @param id
     */
    void removeCurrency(Long id);
}
